/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import java.util.List;
import models.Docente;
import models.SemestreAcademico;
import play.Logger;
import play.mvc.Controller;

/**
 *
 * @author Administrador
 */
public class AperturarCiclo extends Controller{
    

    /**
     * 
     * @param mensaje Muestra alguna notificaciòn de error o confirmación
     */
    public static void index(String mensaje) {
        SemestreAcademico semestre = SemestreAcademico.find("order by id DESC").first();
        Docente docente = firstController.docente;
        if(docente==null){
            firstController.dispatcher();
        }
        if(semestre==null){
            mensaje= "Aun no se han registrado semestres.";
            semestre = new SemestreAcademico();
            crearSemestre(mensaje);
        }
        Logger.info("Inicio");
        render(semestre, docente, mensaje);
    }
    
    /**
     * 
     * @param mensaje Muestra alguna notificaciòn de error o confirmación
     */
    public static void crearSemestre(String mensaje){
        SemestreAcademico semestre = SemestreAcademico.find("order by id DESC").first();
        Docente docente = firstController.docente;
        System.out.println(mensaje);
        if(semestre==null){
           // mensaje= "Aun no se han registrado semestres.";
            semestre = new SemestreAcademico();
        }
        render(semestre, mensaje,docente);
    }
    
    /**
     * 
     * @param semestre El nuevo semestre a registrar en la base de datos
     */
    public static void registarSemestre(SemestreAcademico semestre){
        validation.valid(semestre);
        
        if(validation.hasErrors()){
            crearSemestre("Se deben completar todos los campos");
        }
        if(semestre.bSonFechasValidas()){
            semestre.save();
            index("Se ha creado correctamente");
        }else{
            crearSemestre("Error: La fecha de inicio es mayor o igual que que la fecha final");
        }
        
    }

    
    /**
     * 
     * @param semestre El semestre a actualizar
     * @param id El id del semestre que se actualizarà
     */
    public static void actualizarSemestre(SemestreAcademico semestre, Long id){
        SemestreAcademico semestreAnterior = SemestreAcademico.findById(id);
        validation.valid(semestre);
        if(validation.hasErrors()){
            mostrarSemestre("Se deben completar todos los campos");
        }
        if(semestreAnterior==null){
            mostrarSemestre("No se pudo actualizar, semestre no encontrado.");
        }
        if(semestre.bSonFechasValidas()){
            semestreAnterior.sem_datFechaFin= semestre.sem_datFechaFin;
            semestreAnterior.sem_datFechaInicio= semestre.sem_datFechaInicio;
            semestreAnterior.sem_vcNombre= semestre.sem_vcNombre;
            semestreAnterior.save();
            index("Se actualizò correctamente");
        }else{
            mostrarSemestre("Error: La fecha de inicio es mayor o igual que la fecha final");
        }
        
        
    }
    

    /**
     * 
     * @param mensaje Mensaje que se mostrarà confirmando la actualizaciòn del Semestre
     */
    public static void mostrarSemestre(String mensaje){
        SemestreAcademico semestre = SemestreAcademico.find("order by id DESC").first();
        render(semestre, mensaje);
    }
    
    public static void mostrarSemestres(String mensaje){
        List<SemestreAcademico> semestres = SemestreAcademico.findAll();
        
        render(semestres);
    }
    
    public static void eliminarSemestre(Long id){
        if(id!=null){
            SemestreAcademico semestre = SemestreAcademico.findById(id);
            semestre.delete();
            mostrarSemestres("El semestre fue eliminado correctamente");
        }else{
            mostrarSemestres("No se encontró el semestre");
        }
    }
}
